package com.kit.personalkit.mapper;

import com.kit.personalkit.pojo.dto.UserRegDTO;
import com.kit.personalkit.pojo.dto.UserUpdateDTO;
import com.kit.personalkit.pojo.vo.UserVO;
import com.kit.personalkit.pojo.entity.User;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface UserMapper {
    /**
     * 插入用户
     * @param user
     * @return 受影响行数
     */

    int insert(User user);

    /**
     * 通过用户名查询用户
     * @param userName
     * @return
     */
    UserVO selectByUserName(String userName);

    /**
     * 通过id查询用户
     * @param id
     * @return
     */
    UserVO selectByUserId(int id);

    /**
     * 通过User修改用户
     * @param user
     * @return
     */
    int updateUser(User user);

    /**
     * 查询用户
     * @param offest 表示偏移量，用于指定查询结果的起始位置。在分页查询中，它表示需要跳过的记录数量。
     * @param limit 表示每页的记录数，即每次查询返回的最大记录数量。
     * @return
     */
    List<User> selectByPage(@Param("offest")int offest, @Param("limit")int limit);

    Integer getTotalUsers();

    int deleteUser(Integer userId);

    List<User> searchUsers(String keyword);

}
